@ConfigurationProperties(prefix = "spring.batch.process")
@Data
public class BatchProperties {
    
    private boolean enabled = true;
    private Thread thread = new Thread();
    private Retry retry = new Retry();
    private List<JobConfig> jobs = new ArrayList<>();

    @Data
    public static class Thread {
        private int coreSize = 5;
        private int maxSize = 10;
        private int queueCapacity = 25;
    }

    @Data 
    public static class Retry {
        private int maxAttempts = 3;
        private long backoffPeriod = 1000L;
        private List<Class<? extends Throwable>> retryableExceptions = 
            Arrays.asList(Exception.class);
    }

    @Data
    public static class JobConfig {
        private String name;
        private String reader;
        private String processor;
        private String writer;
        private int chunkSize = 1000;
        private boolean skipLimit = true;
        private int maxSkipCount = 100;
        private RetryPolicy retryPolicy = RetryPolicy.SIMPLE;
        private Map<String, String> parameters = new HashMap<>();
    }
} 